home *** CD-ROM | disk | FTP | other *** search
/ MacWorld 1999 July / Macworld (1999-07).dmg / Shareware World / Info / For Developers / Mops 3.4.sea / Quick Edit ƒ / Quick Edit 3.0 ReadMe < prev    next >
Text File  |  1998-09-26  |  28KB  |  591 lines

  1.   \ 26Sep98 DBH
  2.  
  3. IMPORTANT TIP ABOUT READING THIS FILE:  While holding down the ctrl key, click
  4. the mouse anywhere in the window and a popup menu will appear.  The popup menu
  5. is an index into this ReadMe file.  By selecting from the menu you can quickly
  6. jump to various parts of this file.  You must, of course, be using Quick Edit
  7. to read this file.
  8.  
  9.  
  10.  
  11.  
  12. This information has been updated for version 3.0
  13.  
  14. :class WHAT THIS IS ****
  15.  
  16. Quick Edit (QE) is a programmer's source code editor intended for use with
  17. Mops, Michael's Object Oriented Programming System, and System 7. Typed Mops
  18. commands can be executed directly from an editor window, thus avoiding
  19. copy-switch-paste.  There is a lot more interaction between Mops and QE.
  20. Mops and QE work together to form an Integrated Development Environment.
  21.  
  22. Also included are a set of text files that comprise a Subject Sorted 
  23. Glossary for Mops definitions.
  24.  
  25.  
  26. :class NEW FOR VERSION 3.0 ****
  27.  
  28. QE 3.0 is a "maintenance" version.  No radically new features have been
  29. added.  A few problems have been cleaned up.  Existing features have been
  30. polished a bit.  Most importantly, QE is now compatible with Power Mops.
  31.  
  32. •    QE will now recognize either Power Mops or the 68K Mops when sending
  33.     AppleEvents.
  34.  
  35. •    The popup method browser now shows "code" methods.  This was a bug.
  36.  
  37. •    The popup method browser now displays everything in alphabetic order.
  38.  
  39. •    Clicking in the lower left box will toggle the wordwrap or console
  40.     features.
  41.  
  42. •    Sometimes when printing, the first 2 lines overlapped somewhat.  This has
  43.     been fixed.
  44.  
  45. •    Shift-Return is now the same as Enter.  This was a request from a user.
  46.  
  47. •    Corrected some Glossary and Subject definitions.
  48.  
  49. •    The default setting for "Whole Word Search" in the Find... Dialog is
  50.     now user settable with the QEF1 resource number 9  (00 01 = on, 00 00 = off)
  51.  
  52.  
  53.  
  54. :class WHAT YOU NEED TO USE QUICK EDIT ****
  55.  
  56. 1) System 7.x
  57.  
  58. 2) Mops (Michael's Object Oriented Programming System version 3.x).
  59.  
  60. 3) The provided Mops Glossary file.
  61.  
  62. 4) I strongly recommend that you also use (load) the provided file "QEconsole"
  63. and turn on the Edit/Console feature for at least one of your open QE windows.
  64.  
  65.  
  66. Actually, 1) and 2) are not absolutely required as Quick Edit will function
  67. quite well as a stand-alone text processor without System 7 or Mops.  In that
  68. case you don't need 3) or 4) either.
  69.  
  70.  
  71. :class HOW TO USE QUICK EDIT ****
  72.  
  73. 1) Launch Quick Edit and use it to change your Mops.paths file (in folder
  74. Mopsƒ) to include any folders that you wish to contain Mops source code.  If
  75. you are unsure about how to do this, just save any newly created Mops source
  76. code (files you create with QE) in the folder Mopsƒ for now.
  77.  
  78. 2) Launch Mops.
  79.  
  80. 3) Load the provided file, QEconsole, into Mops.  Save your new Mops dictionary
  81. as, e.g., MopsQE.dic  (this step is not necessary, but is recommended).  Turn
  82. on the Edit/Console feature using the menu from within Quick Edit.  The word
  83. "console" will appear in the bottom left of the window.
  84.  
  85. 4) Now you should be able to execute typed Mops instructions from a QE window
  86. as if you were typing into the Mops window and any textual output, including
  87. stack items, will appear in your QE console window instead of the Mops console
  88. window.  See the Console feature.  Remember that you must use the enter key,
  89. not the return key, to execute commands.  
  90.  
  91.  
  92. :class CONSOLE
  93.  
  94. :m Console  A QE window can now become a front end for Mops.  All textual input
  95. *and* output is performed completely from within QE.  First, the file
  96. "QEconsole", provided with this release, must be loaded into Mops.  Then, by
  97. toggling the menu item Edit/Console, you can declare the current QE window to
  98. be a console window.  The word "Console" will appear in the lower left corner
  99. of the window.  Other windows will be unaffected.  I strongly suggest that you
  100. try this.  More details are provided later in this file.  You can also toggle
  101. the console feature by clicking the mouse on the spot in the window where the
  102. word "Console" appears when turned on.
  103.  
  104.  
  105. :m > prompt  After pressing enter from a console window you will get a ">"
  106. prompt from Mops, followed by any stack items that may be present.  For
  107. example:
  108.  
  109. 3 4 <enter>
  110. >3 4 
  111.  
  112. You can still enter Mops commands from non-console windows, but any output will
  113. appear in the Mops console instead of the current QE window.  This behavior is
  114. desirable for source code files that you don't want to become "littered" with
  115. output from Mops.  Of course, you can declare any window or file in QE to be a
  116. console window if you wish.  I typically leave my source code windows as
  117. non-console, and have one untitled window as a console.
  118.  
  119. You must still switch over to Mops in order to perform user interface actions. 
  120. But I think you will find that a QE console window can greatly enhance your
  121. development productivity because all of the QE programmer support features are
  122. immediately available:  Glossary, Open Source, Edit File, Save&Load, etc.
  123.  
  124. If you get an error message, such as when trying to execute an undefined Mops
  125. word, you may see something like the following:
  126.  
  127. foo <enter>
  128.  
  129. undefined word
  130. >QECONS foo
  131.            ^
  132. Don't worry about the presence of >QECONS ( or NEWVECS ).  These commands are
  133. being sent by QE to Mops each time an AppleEvent is sent.  The purpose is to
  134. reset the Mops output vecs each time because Mops does not know what kind of QE
  135. window, console or non-console, is currently in use.  See the file "QEconsole"
  136. for exact details of what is going on if you are interested.
  137.  
  138.  
  139. :class MOPS GLOSSARY ****
  140.  
  141. ***IMPORTANT***
  142. You must keep the file "Mops Glossary" in the same folder as Quick Edit.
  143.  
  144. While using QE it is possible to summon the glossary to look up a definition in
  145. either of 2 ways.  First, you may highlight a word in a QE window and then
  146. invoke the Mops/Glossary menu command (or command-Y).  If you do not highlight
  147. a word, then the first word to the left of the cursor will will be used as the
  148. search word.  Or, if you simply placed the cursor in the middle of a word, then
  149. that word will be used.  If found in the glossary, the word and its definition
  150. will appear in a special window.  A second way to use the glossary is to just
  151. invoke the Mops/Glossary menu command and then begin typing the word that you
  152. wish to look up.  MacForth users will recognize this as the Online Glossary
  153. feature from the Sibley Editor.
  154.  
  155. If no QE window is open, then the Glossary feature will be unavailable.
  156.  
  157. You may copy text from the Glossary.   For each definition in the Glossary we
  158. have the stack effect immediately to the right of the name.  Further to the
  159. right, on the same line, we have the Subject Name and File Name (the name of
  160. the Mops file that contains the source code for the word) in
  161. SubjectName/FileName format.
  162.  
  163. We have included a file, Stack Notation, to define the stack effect
  164. notation used here.
  165.  
  166. For most subjects we have a Subject Glossary file in the folder Subject 
  167. Glossary.  In these files you will find all related words grouped together 
  168. in a logical manner by function, rather than by ASCII order.  I find
  169. that printing all of the Subject Glossary files and placing them in a
  170. hole-punch binder with index tabs is an excellent way to keep a quick
  171. reference.  You can also print the ASCII sorted glossary if you want, it's just
  172. a text file, but it is really intended for interactive use within QE.   From
  173. the Glossary you can obtain the source file name, see where the source file is
  174. located from the Mops File Index, and then open the source file to see the
  175. actual definition.  Note that one can now easily open the source for already
  176. compiled code simply by highlighting a word in QE and invoking the Mops/Open
  177. Source menu command (command-=), as long as Mops itself is also running.  
  178. You may delete and add to the glossary yourself, but only if you open
  179. the file "Mops Glossary" as a normal edit file, not as it is opened
  180. as the QE glossary window.  Added definitions MUST be in ASCII order
  181. and begin in the first column on a new line.  Only definition names may
  182. begin in the first column.
  183.  
  184. :class BROWSING MOPS DEFINITIONS AND FILES ****
  185.  
  186. Particularly convenient is the ability to quickly "browse" Mops definitions and
  187. source files from within Quick Edit while Mops is also running.  By selecting a
  188. Mops word or Mops source file name, you can have the file containing the
  189. definition of that Mops word, or simply the named file, opened into QE with the
  190. menu commands Mops/Open Source and Mops/Edit File.  If you do not highlight a
  191. word, then the first word to the left of the cursor will will be used as the
  192. lookup word or file name.  I highly recommend that you try this, I use it all
  193. the time.  Note that it is not necessary for a file to be loaded in order to
  194. summon it via Edit File, but the file must be in the path specified by your
  195. Mops.paths file.  Also note that module source files can be opened by just
  196. selecting the module name, you do not have to select the actual module source
  197. file name which will have ".txt" appended, although you still could.
  198.  
  199. Not all Mops definitions can be browsed this way.  Definitions that occur prior
  200. to a file lookup utility, such as all Nucleus definitions (in source files
  201. Nuc1.asm, Nuc2.asm, etc.), cannot be looked up with the Mops/Open Source
  202. command.  In fact, an attempt to do so will result in no response at all.  If
  203. this happens to you, you should next try invoking the Mops/Glossary command and
  204. you should see the definition of the word there (and the Glossary definition
  205. will confirm that this is a nucleus definition).
  206.  
  207. :m Popup Browser  As before, holding down the ctrl key while clicking the mouse
  208. anywhere in the window will cause a popup menu to appear.  The popup is an
  209. index into any class and method definitions in the current window.  New for QE
  210. 2.7 is a similar popup for normal Forth colon definitions.  Press
  211. ctrl-option-click to summon it.  By selecting from the menu you can quickly
  212. jump to various parts of the file.
  213.  
  214.  
  215. :class SUBJECT GLOSSARY ****
  216.  
  217.  ***IMPORTANT***
  218. You must keep the folder "Subject Glossary" in the same folder as Quick Edit.
  219.  
  220. We have included a set of normal text files that comprise a "Subject Sorted 
  221. Glossary".  The purpose of these files is to allow the programmer to quickly
  222. review the available word set for a given category of words.  This avoids 
  223. having to read the entire Glossary (which is ascii sorted) in order to find
  224. out what is available.
  225.  
  226. You can directly open any of these files via menu access to the Subject 
  227. (sorted) Glossary.  Under the Mops menu.  
  228.  
  229. :m Custom Subject Menu  The Subject Glossary now has its own menu.  The menu
  230. items are the file names of the corresponding files in the Subject Glossary
  231. folder.  You can customize this menu simply by adding or deleting to the menu
  232. resource of QE.  If you add new file names to the subject menu then you must
  233. also provide the file with the *same* name in the Subject Glossary folder. 
  234. Alphabetic order is not a requirement.  You must not rename or move the Subject
  235. Glossary folder.
  236.  
  237. :class TIPS ****
  238.  
  239. Change the file Mops.paths to include the directory (folder) that your QE files
  240. are in and you will be able to use the QE menu commands Load… and Save&Load
  241.  
  242. Save&Load is probably the most used command for me.  My typical Mops
  243. programming session goes like this:
  244.  
  245. • Launch both Mops and QE
  246. • Open or create a source code file, don't declare it as a QE console.
  247.   Actually, you can declare your source file as a console, but when you
  248.   do a Save&Load your window will then become "littered" with file loading
  249.   messages and so forth.  If you place an "ENDLOAD" at the end of you file
  250.   and then make sure to jump the cursor to the end of the file (e.g. command
  251.   option downarrow), then the litter will cause no problems.
  252. • Invoke Save&Load  (command-K), any compilation errors will cause the
  253.   QE window to scroll to the first occurrence of the offending code.  I can
  254.   then edit the mistake and Save&Load again.  This is *very* quick and also offers
  255.   the added protection of saving code to disk before any fatal crashes could occur.
  256. • Interactive testing of small snippets of code are usually done in a QE console window.
  257. • With a console window, I typically don't even bother to arrange the windows so that
  258.   I can also see the Mops console window.  There is no need.
  259. • But with a non-console window I typically keep all of the QE windows in "right half" mode,
  260.   easy to do with the Window/Right Half or Window/All Windows->Right commands.  This way
  261.   I can still execute commands from QE, or use Load... or Save&Load, and see the resulting
  262.   output in Mops (which is visible on the left side of my screen).
  263. • I frequently use the Glossary, source code browser, Edit File command, and popup browser
  264.   in my Mops programming sessions.
  265.  
  266. Position both the Mops window and your current QE window so both are visible,
  267. unless you are using a QE console window where it is not necessary to see the
  268. Mops console window.
  269.  
  270. Pressing enter will execute either just the selected range, or if there
  271. is no selection the entire line will be executed.  Multiple lines or an
  272. entire file may be executed this way.
  273.  
  274. Pressing enter will normally advance the cursor to the end of the next
  275. line.  Hold down the option key to keep the cursor on the same line.
  276.  
  277.  
  278. :class ABOUT QUICK EDIT ****
  279.  
  280. Quick Edit is written in MacForth and is, for the large part, the 
  281. MacForth text editor, or Sibley Editor, with extensions to use Apple Events 
  282. for Mops communication.  I also added my favorite tweaks to the editor. 
  283. Actually, especially now with version 2.7, the source code for QE is bearing
  284. less and less resemblance to MacForth.  For example, thanks to MacForth's
  285. separated headers and flexible vocabulary management, I have been able to
  286. rename even MacForth kernel words to names that make more sense to me.  For
  287. example, words that simply invoke a toolbox call are now named the same as the
  288. toolbox call.  The Basic text engine is MacForth's, as is a lot of the
  289. difficult file handling stuff.  Kudos to the guys that created this stuff which
  290. include Dave Sibley, Ward McFarland, Xan Gregg, and a few others.
  291.  
  292. You MacForthers may be interested in knowing that Quick Edit duals as my
  293. MacForth programming environment (as a snapshot, not a turnkey).  No surprise. 
  294. There is a global switch that is used to change from QE-as-Mops-editor to
  295. QE-as-MacForth.  All of the programmer's assist features are available in
  296. either mode and behave the same in either mode, except in a different context. 
  297. In fact, with the new console feature it is easy to forget which environment
  298. one is using (so I keep a bold "M" or "Q" in the lower left of each window as a
  299. reminder, during development only).
  300.  
  301. QE behaves mostly in the standard Macintosh manner and so should be fairly easy
  302. to learn.
  303.  
  304. MacForth users will of course feel pretty much at home except for a few
  305. exceptions that are explained later.  
  306.  
  307. I wrote QE as a tool to make it easier for me to use Mops.  If one
  308. has a desire to explore Forth object oriented programming ( FOOP?
  309. Forth++? ), then a look at Mops is a must.  You will likely find that you
  310. will soon stop exploring and begin writing useful code at a very high
  311. level of productivity.
  312.  
  313.  
  314.  Doug Hoffman 
  315.  
  316.  565 Countryside Lane
  317.  Oakland, Michigan  48363-1401
  318.  USA
  319.  
  320.  
  321.  
  322.  
  323. :class DETAILS OF USING QUICK EDIT ****
  324.  
  325. :m #ofWindows Up to 20 files (windows) can be open at the same time.  The open
  326. QE file names will appear under the Windows menu and will be preceded by
  327. bullets if the files have unsaved changes.
  328.  
  329. :m Search Shortcuts There are several useful text search shortcuts that bypass
  330. the Find... dialog. Option-Doubleclick on a word to find the first occurrence.
  331. A subsequent Command-G (Find Same) will then find the next occurrence. Any time
  332. a search fails a simple beep will be issued and the cursor will remain where it
  333. last was.  Command-Doubleclick on a word to do a backwards  search (i.e.
  334. attempt to find the first prior occurrence).  Option- Command-Doubleclick on a
  335. word to find the next occurrence.
  336.  
  337. If the Text Search dialog is summoned (via Command-F or the menu) any
  338. highlighted text will automatically become the "Search for" parameter.  If
  339. no text was highlighted then the prior "Search for" text will remain.
  340.  
  341. All searches begin at the current selection point and end at the end of
  342. the file.  If the Text Search dialog is used one can also search all files in
  343. the same directory (folder) as the open file.  Holding down the shift key when
  344. either summoning the Text Search dialog or doing a Find Same (Command-G) will
  345. cause the search to be initiated from the beginning of the file.
  346.  
  347. :m Command-` (Enter Search$) will enter the hilited text as the search string
  348. without summoning the Text Search dialog.  This is useful for "loading" some
  349. text to search for in one window and then moving to another  window to do the
  350. search.  A Command-Shift-G will start the search at the beginning of the file. 
  351. This can be handy.  Command-Shift-F will  also start the search at the
  352. beginning of the file, but will summon the Text Search dialog.
  353.  
  354. A Popup menu is available that will list all classes and their methods
  355. for the current window.  A ctrl-click in a QE window that contains Mops source
  356. code will yield the menu.  The menu selection will cause a jump to the source
  357. code for the class or method.  Ctrl-option-click will give a popup just for
  358. colon definitions.
  359.  
  360. :m JumpMarks Up to 10 "bookmarks" or jumpmarks can be set by pressing
  361. Command-Shift-J followed by a number (0 through 9).  Note that after invoking
  362. the menu item nothing else can happen until you press a key.  If you don't
  363. press a number key then QE will simply "beep" at you indicating that no
  364. bookmark was set.  One then jumps to these bookmarks by pressing  Command-J
  365. followed by pressing the corresponding single digit number key.  Again, nothing
  366. else can happen until you press a key.  After pressing Command-J, you can
  367. optionally press B, E, or L, to jump to the file Begining, End, or Last
  368. position prior to the last jump.
  369.  
  370. Modifier keys for cursor movement works as follows:
  371.  
  372. Option left/right        move cursor one word
  373. Option up/down            move one line
  374. Command left/right        move to beginning or end of line
  375. Command up/down            move to beginning or end of screen or prev/next screen
  376. Command-Option up/down    move to beginning or end of file
  377. Option-Delete            delete previous word
  378. Command-Backspace        delete to beginning of file
  379. Command-Delete            delete to end of file
  380.  
  381.  
  382.  
  383. :m MiniPrint...  is intended for use only with high resolution printers having 
  384. scalable fonts such as LaserWriters or the StyleWriter.  MiniPrinting 
  385. will print in a very small Helvetica font and allow for a paper savings 
  386. of 3-4 to 1 in most cases.  I find this useful for printing drafts
  387. and reducing the quantity of paper used.
  388.  
  389. If the printed page seems wrong, try using the Page Setup...  command and
  390. select portrait orientation at 100% scale.
  391.  
  392. :m SmartScrap Note that cutting and pasting will normally delete and add extra
  393. spaces as necessary in a fashion similar to WriteNow.  This feature is only
  394. activated  after text is hilited via a doubleclick and is then cut or copied.
  395.  Text  that is hilited via shift-extension or singleclick-drag will be cut
  396. and pasted in the normal fashion (i.e. no extra spaces will be automatically
  397. added).
  398.  
  399. :m AutoIndent Also note that indents via tabs or spaces will be repeated on
  400. subsequent lines upon return unless the option key is pressed.  Auto-Indent is
  401. toggled from the menu.
  402.  
  403. :m Word Delimiters  In most word processors characters such as a period (.) are
  404. treated as a word delimiter.  So doubleclicking something like " this.word " in
  405. most word  processors will only hilite this or word, depending upon where you
  406. first clicked.  Also, in most word processors a whole word search on " this "
  407. will hit on " this.word " and other compounds of " .this.  ".  Since Forth does
  408. not treat a period as a delimiter, I have chosen to have Quick Edit do
  409. likewise.  So a period, and other normal word delimiters are *not* delimiters
  410. in QE.  This behavior may be different from what you are used to.
  411.  
  412. The Mops menu contains a few handy Mops commands that will clear the stack or
  413. the Mops window.
  414.  
  415. A multiple line indent/unindent command is also available in the Text menu.
  416.  
  417.  
  418. :class DYNAMIC WORD WRAP ****
  419.  
  420. I must be quite honest here and explain that QE's dynamic wordwrap feature is
  421. still somewhat "under development".  The implementation in QE 2.6 was pretty
  422. buggy and in retrospect should not have been included.  Dynamic wordwrap in 2.7
  423. is improved but as yet imperfect.  It seems to work best for paragraphs that
  424. are not too long (say 10 lines or less).  Beyond that it does not always work
  425. perfectly (but the imperfections are benign).
  426.  
  427. Also, I should warn that this feature takes a little getting used to.  It is
  428. best to leave it turned off unless you know that you are editing a paragraph
  429. that you want to wrap.  If you forget that it is turned on and you start to
  430. edit some source code you will probably be surprised and annoyed by the
  431. behavior.  However, when used judiciously the dynamic wordwrap can be a useful
  432. feature because you can just type and edit your thoughts without regard to the
  433. current line length.
  434.  
  435. Note that wrapping the selection or entire file should not cause any problems
  436. for you (those are much easier tasks), so use those commands without concern.
  437.  
  438. When activated, word wrap will occur as expected, with a couple of unique
  439. characteristics.  One important difference in the way QE wraps text, compared
  440. to conventional word processors, is that carriage returns are still maintained
  441. at the end of each line.  This is done in order to remain compatible with the
  442. programming source code files as they are expected by most programming
  443. languages, including of course Mops.  Another advantage is that QE can remain
  444. very fast while still providing a word wrap function.  If you take a look at
  445. other text processors that word wrap you will notice a considerable slowing
  446. when wrap is turned on for files of any significant size.  QE does not slow
  447. down at all!
  448.  
  449. Note that QE's word wrap does much more than simply insert a CR
  450. automatically as you type.  QE will look at the paragraph in which the
  451. cursor resides and perform wrapping on the entire paragraph, and only that
  452. paragraph, automatically as you type.  So there is the second important
  453. difference from the norm in QE's word wrap.  Word wrapping will *only*
  454. occur in the current paragraph ( a paragraph in QE is any text that is
  455. delimited by blank lines).  This means that you could turn on word wrap in
  456. the middle of some source code with very long lines and your typed text
  457. would be wrapped while not affecting the rest of the file.  Be careful
  458. though, because if you forget that wordwrap is activated and start typing
  459. in some long source code lines, then those lines will get split up and a
  460. simple undo is not available (although a File/Revert... is a good way to
  461. recover from this if necessary).  WordWrap is activated through the AutoWrap
  462. menu command under the Text menu.  A bold "W" is also placed at the lower left
  463. of the window as a reminder.  You can also toggle wordwrap on and off by
  464. clicking on the spot where the bold "W" appears.  WordWrap only applies to
  465. files that you specify.  WordWrap activation and length is saved with each
  466. file.  You set the wrap length with the Text/Set AutoWrap... menu command.
  467.  
  468.  
  469. :class FONTS/PRINTING ****
  470.  
  471. :m Cancel Printing  You can cancel a print job that is spooling by pressing
  472. command-. (command-period), even though there is no dialog indicating as such.
  473.  
  474. :m Normal Printing  After receiving comments, it became clear that a normal
  475. sized printing function should be included without having to fuss with the
  476. resources.  So selecting File/Print... will yield a Monaco 9 "large type"
  477. print.  Also, the 2 different forms of miniprinting are now directly available
  478. from the File menu. MiniPrint(1 col)... will yield a 1 column monospaced print
  479. that is fairly condensed.  MiniPrint(2 col)... will yield a 2 column
  480. proportionally spaced print that is the most condensed.
  481.  
  482.  
  483. The window and printer font IDs and font sizes are now resources (QEF1) and so
  484. can be changed to suit.  You must use a resource editor.  I know this isn't 
  485. very Mac-like, but it was easy to implement (and we're all programmers  here,
  486. right?).  
  487.  
  488. The QEF1 resources affect things as follows:
  489.  
  490. RESOURCE ID        AFFECTS                        DEFAULT VALUE
  491.  
  492. 1                window font    ID                $00C8    Modified Monaco (MUST be mono-spaced)
  493. 2                window font size            $0009
  494.  
  495. 3                miniprint(2col) font ID        $0015    Helvetica
  496. 4                miniprint font size            $0007
  497.  
  498. 7                miniprint(1col) font ID        $0016    Courier
  499. 8                option miniprint font size  $0007
  500.  
  501. Note that the window font MUST be mono-spaced.  But this is not a requirement 
  502. for the miniprint fonts.  In fact, the Helvetica default miniprint font, which 
  503. is proportionally spaced, is used to allow two columns per page due to the 
  504. relatively high character linear density.  
  505.  
  506. We use a proper programmer's screen font that clearly distinguishes  
  507. characters that are ambiguous with the Monaco font.  Zero(0) vs. capital
  508. "Oh"(O), Capital"I"(I) vs. lowercase "el"(l).
  509.  
  510. :m MiniPrinting  All miniprinting will yield approximately 104 lines per column
  511. (standard 81/2 x 11 inch paper) on most printers.  Printing will always wrap
  512. long lines.
  513.  
  514.  
  515.  
  516. :class OTHER FEATURES ****
  517.  
  518. :m Edit File Mops/Edit File (command-E) menu command.  Hilite the name of a
  519. file and then invoke this menu command.  Or simply type the file name and
  520. invoke the menu (the text to the left of the cursor will be automatically
  521. selected).  The file will be opened.  Also works for module filenames without
  522. having to first append ".txt".
  523.  
  524. • There is now an "AllWindows->Right" Windows menu command.  Useful for getting all
  525.   open editor windows off to one side so the Mops window can be viewed while still
  526.   in Quick Edit.
  527.  
  528. :m File WordWrap   You can now wordwrap an entire file instantly with the
  529. Text/Wrap File... menu command.  You can also "unwrap" an entire file with the
  530. Text/Unwrap File command.  You may wish to unwrap a file so you can copy and
  531. paste into a word processor that provides conventional "soft" wrapping of text.
  532.  
  533. :m Detab File  You can now convert all tabs in a file to spaces with the
  534. Text/Detab File menu command.  This will be convenient when, for example,
  535. pasting QE text into another text processor that does not recognize tabs.
  536.  
  537. :m Magic Copy   What??   Well, I couldn't think of another name for this.  If
  538. you hold the mouse I-beam over a word (don't click there) and invoke Copy via
  539. command-C, then that word will be pasted at the current cursor location.  But
  540. only if nothing was selected.   I find this to be handy when constructing
  541. definitions comprised of long words that are also nearby (a common situation).
  542. This is much quicker and easier than double-clicking, copying, repositioning
  543. the cursor, and finally pasting.  Besides, all a copy would do before, if
  544. nothing was selected that is, was beep.  Surely we must have something more
  545. useful than that...
  546.  
  547. :m Page ID...  There is now an option to use up to 5 characters as an
  548. additional "ID" for a file.  Use the Edit/Page ID... menu command.  The ID will
  549. appear in the lower left of the window and will be saved with the file.  You
  550. may wonder "What is this for?", which is a valid question.  I use this as an
  551. aid to manage printouts of large projects that consist of many files.  For
  552. example, one could assign numbers, perhaps 10, 20, 30, and so on to each file. 
  553. Individual files may require more than one page to print, but the ID numbering
  554. system is a way to keep things in order without having to reprint everything
  555. when only one file has been changed.  This is somewhat reminiscent of the old
  556. Forth blocks files "triad" printing technique.  The MacForth source code for
  557. QE now consists of over 100 files.  I find it useful to organize them this way.
  558.  The page ID will print in the lower right of each printed page.  Normal page
  559. numbering within the file is as always.
  560.  
  561.  
  562.  
  563. :class PACKING LIST ****
  564.  
  565. The following is a list of all files that should be present in the  Quick Edit
  566. release set that includes the Quick Edit application:
  567.  
  568. Quick Edit ReadMe
  569.  
  570. Mops Glossary
  571.  
  572. QEconsole
  573.  
  574. Stack Notation
  575.  
  576. Subject Glossary  (a folder)
  577.     Arithmetic
  578.     Compiler
  579.     Console
  580.     Control Structures
  581.     Events
  582.     Floating Point
  583.     Memory
  584.     OOP
  585.     QuickDraw
  586.     Stack
  587.     Strings
  588.     System
  589.     Toolbox 
  590.     
  591.